VT-d: clean up dynamic page mapping
authorKeir Fraser <keir.fraser@citrix.com>
Mon, 4 Jan 2010 09:06:02 +0000 (09:06 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Mon, 4 Jan 2010 09:06:02 +0000 (09:06 +0000)
Before dynamic VT-d page table for hvm guest (changeset 20152),
need_iommu is only used for PV guest. And it maps pages into VT-d for
PV guest in get_page_type and grant table.  Now need_iommu is used
both hvm and pv guests, this patch makes those code still only for PV
guest, because it needn't to map pages there for hvm domain.

Signed-off-by: Weidong Han <Weidong.han@intel.com>
xen/arch/x86/mm.c
xen/common/grant_table.c

index a95f1f8fe2f344e2ec2ae10854239ad16a4a1bb5..45653ec25ff8cbdb7dbe6e523aa46d8e37e95d0f 100644 (file)
@@ -2391,7 +2391,7 @@ static int __get_page_type(struct page_info *page, unsigned long type,
     {
         /* Special pages should not be accessible from devices. */
         struct domain *d = page_get_owner(page);
-        if ( d && unlikely(need_iommu(d)) )
+        if ( d && !is_hvm_domain(d) && unlikely(need_iommu(d)) )
         {
             if ( (x & PGT_type_mask) == PGT_writable_page )
                 iommu_unmap_page(d, mfn_to_gmfn(d, page_to_mfn(page)));
index 7d62c2ad4735e7d7b7d63ffc257fc7fc1c87f7b0..243ceb95ad2b28d922d145322bb2e35525ce545d 100644 (file)
@@ -596,7 +596,7 @@ __gnttab_map_grant_ref(
         goto undo_out;
     }
 
-    if ( need_iommu(ld) &&
+    if ( (!is_hvm_domain(ld) && need_iommu(ld)) &&
          !(old_pin & (GNTPIN_hstw_mask|GNTPIN_devw_mask)) &&
          (act_pin & (GNTPIN_hstw_mask|GNTPIN_devw_mask)) )
     {
@@ -779,7 +779,7 @@ __gnttab_unmap_common(
             act->pin -= GNTPIN_hstw_inc;
     }
 
-    if ( need_iommu(ld) &&
+    if ( (!is_hvm_domain(ld) && need_iommu(ld)) &&
          (old_pin & (GNTPIN_hstw_mask|GNTPIN_devw_mask)) &&
          !(act->pin & (GNTPIN_hstw_mask|GNTPIN_devw_mask)) )
     {